package org.madmac.placaRede;

import java.sql.SQLException;

import org.madmac.exception.CampoNaoInformadoException;
import org.madmac.exception.PasswordIncorrectException;

public class PlacaRedeBo {

private static PlacaRedeBo instance;
	
	private PlacaRedeBo(){
		 
	}
	
	public static PlacaRedeBo getInstance() {
		if(instance == null){
			instance = new PlacaRedeBo();
		}
		return instance;
	}
	
	public void validateAndCreate (PlacaRede placarede)
           throws CampoNaoInformadoException, SQLException, ClassNotFoundException, Exception {
						
		/**
		 * Modificado por: Átila Camurça em 28 Jul 2010.
		 * Retorna os erros referentes a inserção de uma nova placa de rede.
		 */		
		if (placarede.getMac() == null || placarede.getMac().isEmpty()) {
			throw new Exception("O campo MAC está vazio.");
		} else if (placarede.getIp().getFaixaIp().getIdFaixa() == null ||
				  placarede.getIp().getFaixaIp().getIdFaixa() == 0) {
			throw new CampoNaoInformadoException("Selecione uma faixa no item Faixa do IP.");
		}else if (placarede.getMaquina().getIdMaquina() == null) {
			throw new CampoNaoInformadoException("Tombamento não encontrado.");
		}  else if (placarede.getMac().length() < 12) {
			throw new CampoNaoInformadoException("O campo MAC está incorreto. Contem menos caracteres que o suportado.");
		}
		
		PlacaRedeDao.getInstance().create(placarede);
	}
	
	public boolean updatePlacaRedeBO (PlacaRede placarede, String up_mac)
           throws CampoNaoInformadoException, SQLException, ClassNotFoundException, Exception {
		
		/**
		 * Modificado por: Átila Camurça em 30 Jun 2009.
		 * Retorna os erros referentes a atualização de uma placa de rede.
		 */
		if (placarede.getId_maquina() == 0) {
			throw new CampoNaoInformadoException("O Tombamento não foi encontrado. Verifique se a máquina realmente existe.");
		} else if (placarede.getFaixa_ip() == 0) {
			throw new CampoNaoInformadoException("Selecione uma faixa no item Faixa do IP.");
		}
		
		return PlacaRedeDao.getInstance().updatePlacaDeRede(placarede, up_mac);
	}
	
	public boolean deletePlacaRedeBO (PlacaRede placarede, PasswordDelMac passwd)
		throws SQLException, ClassNotFoundException, CampoNaoInformadoException, PasswordIncorrectException, Exception {
		
		/**
		 * Modificado por: Átila Camurça em 30 Jun 2009.
		 * Retorna os erros referentes a remoção de uma placa de rede.
		 */		
		if (!passwd.validatePassword(passwd)) {
			throw new PasswordIncorrectException("Senha Incorreta.");
		}else	if (placarede.getMac() == null || placarede.getMac().isEmpty()) {
			throw new CampoNaoInformadoException("O campo MAC está vazio.");
		} else if (placarede.getMac().length() < 12) {
			throw new CampoNaoInformadoException("O campo MAC está incorreto. Contem menos caracteres que o suportado.");
		}
		
		return PlacaRedeDao.getInstance().deletePlacaDeRede(placarede.getMac());
	}
}
